/*
 * GuidedInsertionHeuristic.h
 *
 *  Created on: Dec 10, 2012
 *      Author: lfelipe
 */

#ifndef GUIDEDINSERTIONHEURISTIC_H_
#define GUIDEDINSERTIONHEURISTIC_H_

#include "../Entity/Instance.h"
#include "../Entity/Layer.h"

#include <set>

class GuidedInsertionHeuristic
{
public:
    GuidedInsertionHeuristic();
    virtual ~GuidedInsertionHeuristic();

    Layer generate_guided_layer(Instance & instance,Layer &layer,double bias);
    std::pair<int,int> get_biased_place(std::set<std::pair <int,int> > &places, double bias,Layer &solution_guide);

    std::vector<int> get_used_places(std::set<std::pair<int,int> > & places,Layer &layer);
    Cell::CLOCK_ZONE get_biased_clock(Layer &layer,Layer &solution_guid, Cell cell,const Instance & instance,double bias);
};

#endif /* GUIDEDINSERTIONHEURISTIC_H_ */
